3.1 包
所有Go语言的程序都会组织成若干组文件,每组文件被称为一个 包 。这样每个包的代码都可以作为很小的复用单元,被其他项目引用。让我们看看标准库中的 http
包是怎么利用包的特性组织功能的:
net/http/
cgi/
cookiejar/
testdata/
fcgi/
httptest/
httputil/
pprof/
testdata/
这些目录包括一系列以.go为扩展名的相关文件。这些目录将实现HTTP服务器、客户端、测试工具和性能调试工具的相关代码拆分成功能清晰的、小的代码单元。以 cookiejar
包为例,这个包里包含与存储和获取网页会话上的cookie相关的代码。每个包都可以单独导入和使用,以便开发者可以根据自己的需要导入特定功能。例如,如果要实现HTTP客户端,只需要导入 http
包就可以。
所有的.go文件,除了空行和注释,都应该在第一行声明自己所属的包。每个包都在一个单独的目录里。不能把多个包放到同一个目录中,也不能把同一个包的文件分拆到多个不同目录中。这意味着,同一个目录下的所有.go文件必须声明同一个包名。